home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The PC-SIG Library 10
/
The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso
/
PC_SIGCD
/
10
/
9
/
DISK1095.ZIP
/
EXTRA.PRG
< prev
next >
Wrap
Text File
|
1980-01-01
|
5KB
|
150 lines
*==================================END MODS==================================*
*
* DISPLAY VARIABLE DATA IN SCREEN HEADING
IF DELETE()
@ 5,1 SAY "* DELETED *"
ELSE
@ 5,1 SAY " "
ENDIF
* IDENTIFY RECORD
@ 5,62 SAY RECCNT
@ 5,50 SAY RECNO()
@ 5,43 SAY "Record"
@ 5,61 SAY "of"
* IF DATAIN FLAG SET, ACTIVATE THE GETS
IF DATAIN="Y"
@ 19,72 GET ACTION
READ
* DATE STAMP RECORD
REPLACE LAST_UPDT WITH DATE()
IF REQUEST="E".OR.ACTION<>"C"
STORE "N" TO DATAIN
STORE " " TO REQUEST
STORE " " TO ACTION
ENDIF 2
ELSE
CLEAR GETS
ENDIF 1
*
* DISPLAY CONTROL SUBMENU, CURRENT ACTIVE INDEX
@ 19,0 SAY BLANK
@ 20,0 SAY "----------------------------------------"
@ 20,40 SAY "----------------------------------------"
@ 21,0 CLEAR
@ 21,2 SAY ;
"<F>ind Record <A>dd Record <D>elete/Recall <E>dit Record Current Active"
@ 22,2 SAY ;
"<P>rev Record <N>ext Record <M>enu (return) <K>ey Select Key: "
* IF INDEX SET NAMED IN LIVE_IX HAS MULTIPLE ENTRIES, EXTRACT FIRST
IF (","$&LIVE_IX)
STORE SUBSTR(&LIVE_IX,1,AT(",",&LIVE_IX)-1) TO TEMP
@ 22,70 SAY TEMP
ELSE
@ 22,70 SAY &LIVE_IX
ENDIF
* GET REQUEST AND FORCE TO UPPER CASE UNLESS ALREADY IN 'A' FOR ADD RECORDS
IF REQUEST<>"A"
STORE " " TO REQUEST
STORE " " TO ACTION
@ 23,10 SAY " *** NEXT ACTION TO PERFORM " GET REQUEST
READ
STORE UPPER(REQUEST) TO REQUEST
ENDIF
* CLEAR ADD RECORD COMMAND LINE, SUBMENU AREA
@ 21,0 CLEAR
DO CASE
* ADD NEW CASE OR EDIT DISPLAYED CASE
CASE REQUEST="A".OR.REQUEST="E"
* IN ADD MODE, APPEND A BLANK RECORD FOR THE DATA AND POSITION TO THAT RECORD
IF REQUEST="A"
@ 19,6 SAY "*** PRESS 'C' TO CONTINUE ADDING NEW RECS, ANYTHING ;
ELSE TO QUIT"
APPEND BLANK
STORE RECCNT+1 TO RECCNT
GO RECCNT
ELSE
@ 19,6 SAY "******** PRESS ANY KEY TO FINISH EDIT AND RETURN TO ;
SUBMENU "
ENDIF
@ 21,10 SAY "Enter data at cursor position. Move among fields with"
@ 22,10 SAY "cursor control keys. Press ENTER to move to next field."
@ 23,10 SAY "Press ENTER alone to leave field unchanged."
* SET FLAG TO CAUSE NEW DATA TO BE READ
STORE "Y" TO DATAIN
* TOGGLE DELETE FLAG. * FUNCTION CHECKS IF RECORD NOW FLAGGED AS DELETED
CASE REQUEST="D"
IF DELETE()
RECALL
ELSE
DELETE
ENDIF
* PREVIOUS RECORD IN ACTIVE INDEX SEQUENCE
CASE REQUEST="P"
SKIP -1
* NEXT 3 LINES TO SECURE THE BACKWARD LOOP
IF BOF()
GO BOTTOM
ENDIF
* NEXT RECORD IN ACTIVE INDEX SEQUENCE
CASE REQUEST="N"
SKIP +1
* NEXT 3 LINES TO SECURE THE FORWARD LOOP
IF EOF()
GO TOP
ENDIF
* GET SEARCH VALUE FOR INDEXED SEARCH
CASE REQUEST="F"
* USE MACRO DEFINING INDEX ENTRIES FROM DATA FIELDS
STORE "DI"+LIVE_IX TO IXDEF
STORE &IXDEF TO SV
STORE &SV TO SV
@ 21,1 SAY ;
"ENTER SEARCH VALUE. VALUE SHOWN IS FROM THE DISPLAYED RECORD. PRESS"
@ 22,1 SAY "CTRL-Y TO CLEAR " GET SV
READ
* REMOVE TRAILING BLANKS BEFORE SEARCH
STORE TRIM(SV) TO SEARCH
* IF RECORD IS NOT FOUND DISPLAY STAYS AT CURRENT RECORD
* NEXT LINE TO KEEP TRACK OF CURRENT RECNO() FOR TEST BELOW
STORE RECNO() TO NOW
SEEK SEARCH
* NEXT 3 LINES KEEP PRESENT RECORD DISPLAYED IF NO FIND
IF EOF()
GOTO NOW
ENDIF
* CHANGE INDEX
CASE REQUEST="K"
STORE RECNO() TO RECNOW
STORE " " TO IXCHOICE
* SETUP MENU OF INDEX NAMES, PROVIDE IF CLAUSE FOR EACH INDEX *
@ 21,9 SAY " "
STORE 1 TO COUNT
DO WHILE COUNT<=IXCOUNT
STORE "IX"+CHR(64+COUNT) TO TEMP
IF IXCOUNT>1
?? CHR(64+COUNT)+". "+SUBSTR(&TEMP,1,AT(",",&TEMP)-1)+" "
ELSE
?? CHR(64+COUNT)+". "+&TEMP
ENDIF
STORE COUNT+1 TO COUNT
ENDDO
@ 22,10 SAY "Press letter of desired key " GET IXCHOICE
READ
STORE UPPER(IXCHOICE) TO IXCHOICE
IF IXCHOICE>="A".AND.IXCHOICE<=CHR(64+IXCOUNT)
STORE "IX"+IXCHOICE TO LIVE_IX
STORE &LIVE_IX TO TEMP
SET INDEX TO &TEMP
ENDIF
* GOTO THIS RECORD TO ACTIVATE INDEX
IF RECNOW>0
GO RECNOW
ELSE
GO BOTTOM
ENDIF
ENDCASE
ENDDO
* FALL OUT OF DO WHEN 'M' IS REQUEST, RETURN TO SUBSYSTEM'S MENU
CLEAR
RETURN